/*
 * UnitFabric.h
 *
 *  Created on: 10.12.2011
 *      Author: Kirill Blinov
 *      Copyright: LGPL
 */

#ifndef UNITFABRIC_H_
#define UNITFABRIC_H_

#include "../BasicTypes.h"
#include "CTemplateCollection.h"
#include "ManagerResource.h"

class   IUnit;

class UnitFabric
{
private:
	static CTemplateCollection Templates;

	UnitFabric();
	virtual ~UnitFabric();
public:
	static bool AddTemplate( const UNIT_TYPES UnitType, const std::string TemplateName, GAME_OBJECT* GameObject );
	static bool CreateUnit( const UNIT_PHYSIC_PARAMS &PhysicParams, const std::string TemplateName, const std::string UnitName,
			                IUnit** NewUnit );
    static bool DeleteUnit( const std::string UnitName );
	static void CleanUnits();
};

#endif /* UNITFABRIC_H_ */
